#ifndef __DRV_ADC_H
#define __DRV_ADC_H

#include "at32f421_board.h"

#define USBADC_CHANNEL_NUM 8    // ADC通道数量
#define USBADC_AVERAGE_NUM 32   // 平均次数

#define USBADC_CALIBRATION_ROUNDS 1000 // ADC校准次数

#define OVP_VOLTAGE 5.3

extern __IO float adc1_val[USBADC_CHANNEL_NUM];
extern __IO uint8_t adc1_val_mutex; // 互斥锁
extern float usbadc_offset[4];
extern __IO uint8_t ovp_flag;

void usb_adc_tmr_config(void);
void usb_adc_config(void);
void usb_adc_dma_config(void);
void usb_adc_gpio_init(void);
void usb_adc_load_calibrate_data(void);
void usb_adc_calibrate_offsets(void);
void usb_adc_calc_state(void);

#endif // __DRV_ADC_H